# opencv 提供了haar 算法进行人脸检测
import cv2

# 加载图片
img = cv2.imread("./img/test.png")

# 加载haar级联算法的特征（人脸识别的特征）
classifier = cv2.CascadeClassifier("./haarcascades/haarcascade_frontalface_alt2.xml")

# 使用classifier 对目标检测的配置进行设置
# detectMultiScale 多尺度检测（检测框在一定范围内可以伸缩）
faces = classifier.detectMultiScale(
    image=img,  # 设置需要检测原图
    scaleFactor=1.2,  # 设置检测区域的缩放范围
    minNeighbors=5,  # 可以同时连续检测多少个目标
    flags=0,
    minSize=[50, 50],  # 检测框最小尺度
    maxSize=[100, 100]  # 检测框的最大尺度
)

# print(faces)
# 每一行代表检测到的人脸，左上角坐标，以及目标区的宽、高
# [[468  49  61  61]
#  [194  64  58  58]
#  [ 78  80  57  57]
#  [611  82  54  54]
#  [323  84  53  53]]

# 轮廓标注
for face in faces:
    x, y, w, h = face
    cv2.rectangle(img, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2)

cv2.imshow("img",img)
cv2.waitKey(0)